<?php
/**
 * Библиотека форм сообщений, комментариев, отправки.
 *
 * @package    gbook
 * @category   interface
 * @copyright  2013 Nikolay Konovalov
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */

$DOF->modlib('widgets')->webform();


/*
 * Класс для отображения форм комментариев
 * 
 * В качестве параметров конструктору требуется массив:
      array('commentid' => номер комментария,
            'messageid' => номер сообщения,
            'message'   => текст,
            'author'    => автор,
            'datetime'  => дата поста,
            'buttons'   => функциональные кнопки (редактировать/удалить));
 * Экземпляр формы создаётся таким образом:
 * $form = new form_comment(null, array(...));
 * 
 * @package    gbook
 * @category   block
 * @copyright  2013 Nikolay Konovalov
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
class form_comment extends dof_modlib_widgets_form
{
    
    function definition()
    {

        global $DOF;
        $mform     =& $this->_form;
        $commentid = $this->_customdata['commentid'];
        $messageid = $this->_customdata['messageid'];
        $text      = $this->_customdata['message'];
        $author    = $this->_customdata['author'];
        $datetime  = $this->_customdata['datetime'];
        $mform->addElement('header','cmtheader', $DOF->get_string('commentary', 'gbook') . $this->_customdata['commentid']);
        
        $mform->addElement('static', 'author', $DOF->get_string('author', 'gbook'), $author);

        $mform->addElement('static', 'messagearea', $DOF->get_string('messagearea', 'gbook'), $text);
        $mform->addElement('static', 'date', $DOF->get_string('date', 'gbook'), userdate($datetime));
        $mform->setType('messagearea', PARAM_NOTAGS);
        if ( $this->_customdata['buttons'] )
        {
            $btnarray = array();
            $btnarray[] =& $mform->createElement('submit', 'editcmt', $DOF->get_string('buttonedit', 'gbook'));
            $btnarray[] =& $mform->createElement('submit', 'deletecmt', $DOF->get_string('buttondelete', 'gbook'));
            $mform->addGroup($btnarray, 'btnarr', $DOF->get_string('actions', 'gbook'), array(' '), FALSE);
        }
        $mform->addElement('hidden', 'msgid', $messageid);
        $mform->setType('msgid', PARAM_INT);
        $mform->addElement('hidden', 'cmtid', $commentid);
        $mform->setType('cmtid', PARAM_INT);
    }
}

/*
 * Класс для отображения формы сообщений
 * 
 * В качестве параметров конструктору требуется массив:
      array('messageid' => номер сообщения,
            'message'   => текст,
            'author'    => автор,
            'datetime'  => дата поста,
            'buttons'   => функциональные кнопки (редактировать/удалить));
 * Экземпляр формы создаётся таким образом:
 * $form = new form_comment(null, array(...));

 * @package    gbook
 * @category   block
 * @copyright  2013 Nikolay Konovalov
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
class form_message extends dof_modlib_widgets_form
{
 
    function definition()
    {
 
        global $DOF;
        $mform =& $this->_form;
        $mform->addElement('header','msgheader', $DOF->get_string('message', 'gbook') . $this->_customdata['messageid']);
        
        $mform->addElement('static', 'author', $DOF->get_string('author', 'gbook'), $this->_customdata['author']);

        $mform->addElement('static', 'messagearea', $DOF->get_string('messagearea', 'gbook'), $this->_customdata['message']);
        $mform->addElement('static', 'date', $DOF->get_string('date', 'gbook'), userdate($this->_customdata['datetime']));
        $mform->setType('messagearea', PARAM_NOTAGS);
        if ( $this->_customdata['buttons'] ) 
        {
            $btnarray = array();
            $btnarray[] =& $mform->createElement('submit', 'commentmsg', $DOF->get_string('buttoncomment', 'gbook'));
            $btnarray[] =& $mform->createElement('submit', 'editmsg', $DOF->get_string('buttonedit', 'gbook'));
            $btnarray[] =& $mform->createElement('submit', 'deletemsg', $DOF->get_string('buttondelete', 'gbook'));
            $mform->addGroup($btnarray, 'btnarr', $DOF->get_string('actions', 'gbook'), array(' '), FALSE);
        }
        $mform->addElement('hidden', 'msgid', $this->_customdata['messageid']);
        $mform->setType('msgid', PARAM_INT);
    }
}

/*
 * Класс для отображения формы отправки сообщений/комментариев/редактирования
 * 
 * В качестве параметров конструктору требуется массив:
      array('messageid' => номер сообщения,
            'commentid' => номер комментария,
            'message'   => текст,
            'action'    => выполняемое действие (comment/editmsg/editcmt/submitbutton)
            'author'    => автор,
            'datetime'  => дата поста);
 * Экземпляр формы создаётся таким образом:
 * $form = new form_comment(null, array(...));
 * 
 * @package    gbook
 * @category   block
 * @copyright  2013 Nikolay Konovalov
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
class form_submit extends dof_modlib_widgets_form
{

    function definition() 
    {
        
        global $DOF;

        $mform =& $this->_form;
        $action = $this->_customdata['action'];
        $messageid = $this->_customdata['messageid'];
        $commentid = $this->_customdata['commentid'];
        
        $headmessage = '';
        $strings = array('comment'      => 'commentingmsg',
                         'editmsg'      => 'editingmsg',
                         'editcmt'      => 'editingcmt',
                         'submitbutton' => 'sendmsg');
        if ( key_exists($action, $strings) ) 
        {
            $headmessage .= $DOF->get_string($strings[$action], 'gbook');
        }
        switch ($action) {
            case 'comment':
            case 'editmsg':
                $headmessage .= $messageid;
                break;
            
            case 'editcmt':
                $headmessage .= $commentid. ' ' . $DOF->get_string('tomsgnumber', 'gbook') . $messageid;
                break;

            default:
                break;
        }
        $mform->addElement('header','displayinfo', $headmessage);

        // add author element.
        $mform->addElement('text', 'author', $DOF->get_string('author', 'gbook'));
        $mform->addRule('author', null, 'required', null, 'client');
        $mform->setType('author', PARAM_NOTAGS);
        $mform->setConstant('author', $this->_customdata['author']);

        // add display text field
        $mform->addElement('textarea', 'messagearea', $DOF->get_string('messagearea', 'gbook'));
        $mform->setType('messagearea', PARAM_NOTAGS);
        $mform->addRule('messagearea', null, 'required', null, 'client');
        $mform->setConstant('messagearea', $this->_customdata['message']);
        $mform->addElement('hidden', 'action', $action);
        $mform->setType('action', PARAM_NOTAGS);

        if ( in_array($action, array('comment', 'editmsg', 'editcmt')) ) 
        {
            $mform->addElement('hidden', 'msgid', $messageid);
            $mform->setType('msgid', PARAM_INT);
            if ( $action == 'editcmt' ) 
            {
                $mform->addElement('hidden', 'cmtid', $commentid);
                $mform->setType('cmtid', PARAM_INT);
            }
        }

        if ( $action == 'submitbutton' ) 
        {
            $mform->addElement('reset', 'resettext', $DOF->get_string('buttonreset', 'gbook'));
            $this->add_action_buttons();
        }else 
        {

            $btnarray = array();
            $actions = array('comment' => 'buttoncomment',
                             'editmsg' => 'buttonedit',
                             'editcmt' => 'buttonedit');
            if ( key_exists($action, $actions) )
            {
                $btnarray[] =& $mform->createElement(
                        'submit',
                        $action,
                        $DOF->get_string($actions[$action], 'gbook'));
            }
            $btnarray[] =& $mform->createElement(
                            'reset',
                            'resettext',
                            $DOF->get_string('buttonreset', 'gbook'));
            $mform->addGroup(
                            $btnarray,
                            'btnarr',
                            $DOF->get_string('actions', 'gbook'),
                            array(' '),
                            FALSE);
        }
    }
}
?>